#!/bin/bash - 

# 定义变量vflag
vflag=off
# 定义变量filename
filename=""
# 定义变量output
output=""

# 使用getopt命令处理后的命令行选项和参数重新设置位置参数
set -- `getopt hvf:o: "$@"`

# 定义函数usage
function usage() {

  echo "USAGE:"
  echo "    myscript [-h] [-v] [-f <filename>] [-o <filename>]"
  exit -1

}

# 如果位置参数的个数大于0就执行while循环
while [ $# -gt 0 ]
do

  case "$1" in

    -v)
      vflag=on
      ;;
-f)
  # 如果是-f选项，那么将指定给-f选项的参数赋值给变量filename
      filename=$2

	 # 如果指定的作为参数的文件不存在，则显示文件不存在的信息到标准输出，并退出脚本的运行
      #+否则将位置参数左移，移到-f选项的参数的位置
      if [ ! -f $filename ]
      then

        echo "The source file $filename doesn't exist!"
        exit

      else

        shift

      fi
      ;;
-o)
  # 如果是-o选项，那么将指定给-o选项的参数赋值给变量filename
      output=$2

      # 如果指定的作为参数的文件不存在，则显示文件不存在的信息到标准输出，并退出脚本的运行
      #+否则将位置参数左移，移到-o选项的参数的位置
      if [ ! -d `dirname $output` ]
      then

        echo "The output path `dirname $output` doesn't exist!"
        exit

      else

        shift

      fi
      ;;
    -h)
      usage
      exit
      ;;
--)
  # 如果是双连字符，则跳过，并退出while循环
      shift
      break
      ;;
    -*)
      echo "Invalid option: $1"
      usage
      exit 2
      ;;
    *)
      break
      ;;

  esac
  shift
done